GdkWindow: Iterate through seats in gdk_window_set_cursor()
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 15 Dec 2015 22:20:40 +0000 (23:20 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 15 Dec 2015 22:20:40 +0000 (23:20 +0100)
And set the pointer on all seat pointers, equivalent to the master
pointer lookup we were performing with GdkDeviceManager

gdk/gdkwindow.c

index 2189004434d210d17ab3584c76c0a30b229c1455..961c7876715a4317bfb289c74ea2794900cc67d7 100644 (file)
@@ -6212,28 +6212,21 @@ gdk_window_set_cursor (GdkWindow *window,
 
   if (!GDK_WINDOW_DESTROYED (window))
     {
-      GdkDeviceManager *device_manager;
-      GList *devices, *d;
+      GdkDevice *device;
+      GList *seats, *s;
 
       if (cursor)
        window->cursor = g_object_ref (cursor);
 
-      device_manager = gdk_display_get_device_manager (display);
-      devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
+      seats = gdk_display_list_seats (display);
 
-      for (d = devices; d; d = d->next)
+      for (s = seats; s; s = s->next)
         {
-          GdkDevice *device;
-
-          device = d->data;
-
-          if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
-            continue;
-
+          device = gdk_seat_get_pointer (s->data);
           gdk_window_set_cursor_internal (window, device, window->cursor);
         }
 
-      g_list_free (devices);
+      g_list_free (seats);
       g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_CURSOR]);
     }
 }